-- @Author: baidwwy
-- @Date:   2018-05-04 05:52:59
-- @Last Modified by:   baidwwy
-- @Last Modified time: 2018-07-16 15:41:40

local __Animation = require("gge_animation")

local GGELUA = class(require "gge精灵类")
GGELUA._new_ = false

function GGELUA:初始化(var,frames,width,height)
    self._obj = __Animation()
    if tostring(var)=='texture' then
        self._obj:SetTexture(var:取指针(),frames,width,height)
    elseif type(var) == 'userdata' then
        self._obj:SetP(var)
    elseif type(var) == 'string' then
        var = require("gge纹理类")(var)
        self._obj:SetTexture(var:取指针(),frames,width,height)
    end
    self._rect = require("gge包围盒")()
    self._spr = {}
end

function GGELUA:更新(dt)
    self._obj:Update(dt)
end

function GGELUA:显示(x,y)
    if type(x) == 'table' then x,y=x.x,x.y end
    self._obj:Render2(x,y)
end

function GGELUA:复制()

end
function GGELUA:播放(loop)
    if loop then self:置循环(loop) end
    self._obj:Play()
    return self
end
function GGELUA:停止()
    self._obj:Stop()
    return self
end
function GGELUA:继续()
    self._obj:Resume()
    return self
end
function GGELUA:是否播放()
    return self._obj:IsPlaying()
end
function GGELUA:置循环(loop)
    self._obj:SetLoop(loop)
end
function GGELUA:是否循环()
    return self._obj:IsLoop()
end
local ANIMATION_MODE ={
    向前播放 = 0,
    向后播放 = 1,
    向前往返 = 2,
    向后往返 = 3
};
function GGELUA:置模式(mode)
    self._obj:SetMode(ANIMATION_MODE[mode])
    return self
end
function GGELUA:取模式()
    return self._obj:GetMode()
end
function GGELUA:置帧率(fps)
    self._obj:SetSpeed(fps)
    return self
end
function GGELUA:取帧率()
    return self._obj:GetSpeed()
end
function GGELUA:置当前帧(n)
    self._obj:SetFrame(n-1)
    return self
end
function GGELUA:取当前帧()
    return self._obj:GetFrame()+1
end
function GGELUA:添加帧(spr,n)
    if tostring(spr) == 'sprite' then
        self._obj:AddFrameSprite(spr:取指针(),n and n-1 or -1)
    end
end
function GGELUA:获取帧(i)
    if not i then i = self:取当前帧() end
    if not self._spr[i] then
        self._spr[i] = require("gge精灵类")(self._obj:GetFrameSprite(i-1))
    end
    return self._spr[i]
end
function GGELUA:删除帧(n)
    self._obj:DelFrameSprite(n and n-1 or -1)
    table.remove(self._spr, n)
end
function GGELUA:取帧数()
    return self._obj:GetFrameCount()
end

function GGELUA:取像素(x,y)
    if type(x) == 'table' then x,y=x.x,x.y end
    if self:检查点(x,y) then
        local px,py = self:取包围盒():取坐标()
        return self:获取帧():取纹理():取像素(x-px,y-py)
    end
    return 0
end
function GGELUA:释放(tex)

end
return GGELUA